package com.mioto.ld.module.device.service;

import com.mioto.ld.module.device.model.DeviceAlertLog;
import com.mioto.ld.module.device.model.DeviceAlertLogAppPagerVO;
import com.mioto.ld.module.device.model.DeviceAlertLogPagerVO;
import com.mioto.ld.module.device.model.DeviceAlertStatisticsVO;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * IDeviceAlertLogService
 *
 * @author mioto
 * @date 2024-05-15 16:13:50
 */
public interface IDeviceAlertLogService{

    /**
     * 根据条件查询列表
     * @param deviceAlertLog
     * @return
     */
    List<DeviceAlertLog> findList(DeviceAlertLog deviceAlertLog);

    /**
     * 根据列名和对应的值查询对象
     * @param column
     * @param value
     * @return
     */
    DeviceAlertLog findByColumn(String column, Object value);

    /**
     * 新增对象
     * @param deviceAlertLog
     * @return
     */
    int insert(DeviceAlertLog deviceAlertLog);

    /**
     * 修改对象
     * @param deviceAlertLog
     * @return
     */
    int update(DeviceAlertLog deviceAlertLog);

    /**
     * 修改对象,忽略空值
     * @param deviceAlertLog
     * @return
     */
    int updateIgnoreNull(DeviceAlertLog deviceAlertLog);

    /**
     * 根据列名和对应的值删除对象
     * @param column
     * @param value
     * @return
     */
    int deleteByColumn(String column, Object value);

    /**
     * 根据主键列表批量删除
     * @param ids
     * @return
     */
    int batchDelete(Integer[] ids);

    List<DeviceAlertLogPagerVO> findPager(Integer deviceId, String startTime, String endTime);

    DeviceAlertLog findLastLevelAlert(int alertId, int deviceId);

    int updateRecoveryData(Integer deviceId, Set<Integer> alertIds, Date reportTime, String jsonStr);

    List<DeviceAlertLogAppPagerVO> findAppPager(String alertType,Integer[] deviceIds);

}